home *** CD-ROM | disk | FTP | other *** search
/ Mac Magazin/MacEasy 11 / Mac Magazin and MacEasy Magazine CD - Issue 11.iso / Sharewarebibliothek / Entwickler / WASTE 1.1b1 Distribution / Change History next >
Text File  |  1995-05-31  |  11KB  |  153 lines

  1.  
  2. Changes from 1.1a9 to 1.1b1
  3.  
  4. First of all, I’d like to thank all the people who helped WASTE win the Usenet Macintosh Programming Award for the best freeware of the year, with their contributions to the development of WASTE or with their votes.  I think Dan deserves special thanks for maintaining the C version, without which WASTE could never become so popular.
  5.  
  6. Updated Documentation
  7.  
  8. API Changes
  9.  
  10. • Following a suggestion by Michael Kamprath, I changed the semantics of the weFDragAndDrop flag.  Setting this flag, using either WENew or WEFeatureFlag, now means that your application is drag and drop aware and wants WEClick and WEAdjustCursor to behave accordingly.  It does no longer mean that the Drag Manager is available and WENew no longer sets this bit automatically if the Drag Manager is available.  If you want your application to take advantage of the built-in drag and drop support, now you must explicitly pass weDoDragAndDrop to WENew.  WASTE will ignore the setting of this flag if the Drag Manager is not available.
  11.  
  12. Support for Internet Config 1.1
  13.  
  14. • Starting from this release, the WASTE Demo supports command clicking of URLs via Internet Config 1.1.  A few lines of code, stolen from the ICeTEe sources and slightly modified, were enough to add this cool feature to WASTE, thanks to the simplicity of Internet Config’s API.
  15.  
  16. Bug Fixes
  17.  
  18. • Peter DiCamillo discovered a nasty bug which causes horrible crashes when the selection range extends partially above the view rectangle and you drag it to the trash.  Peter didn’t just find the bug: he also showed us how to fix it.
  19. • Because of a stupid bug introduced in version 1.1a9, WECalText failed to lock the instance record, potentially causing all sorts of crashes.
  20. • Previously WASTE would call the application-supplied scroll callback every time an editing action might have changed the destination rectangle, even if it actually hadn’t.  Now, before calling your scroll callback, WASTE makes sure that the destination rectangle has actually been changed, either because of auto-scrolling or because of a change in the total text height; remember that WASTE changes destRect.bottom so that (destRect.bottom - destRect.top) always equals the text height.
  21. • WEDispose failed to release the memory allocated for the instance-specific object handler table, thus causing a memory leak if you registered instance-specific object handlers.  This bug has been fixed.
  22. •I fixed a minor quirk in the tab code and rewrote some portions of it.
  23.  
  24.  
  25. Changes from 1.1a8 to 1.1a9
  26.  
  27. Support for the Metrowerks compilers
  28.  
  29. • The Pascal source code for both WASTE and the demo app can now be compiled with either THINK Pascal or Metrowerks Pascal.
  30. To compile the source code with THINK Pascal, you’ll need an ad hoc, “thinkified” version of the universal headers, available in a separate archive.
  31. A big “thank you!” goes to Greg Galanos for sending me a complimentary copy of CodeWarrior Gold Academic.
  32. • WASTE.o.lib, a 68K library ready for inclusion in CodeWarrior 68K projects, is now included in this package.  The symbols in this library are all-uppercase to comply with the convention supported by CodeWarrior for exported pascal functions.
  33.  
  34. Bug Fixes
  35.  
  36. • A slight change of the _WERedrawLines routine is supposed to fix an offscreen gworld-related bug which manifested itself on systems with multiple monitors.  Thanks to Mark Alldritt for suggesting this fix.
  37.  
  38. Other Changes
  39.  
  40. • The WECalText routine now automatically redraws the text.
  41. • I eventually included (with slight changes) the WESMARTRECALCSLOP optimization suggested long ago by Leonard Rosenthol and already available in the C version.
  42.  
  43.  
  44. Changes from 1.1a7 to 1.1a8
  45.  
  46. Header Changes
  47.  
  48. • Fixed a bunch of typos in WASTE.h (the previous version wouldn’t even compile — oops!).
  49.  
  50. Bug Fixes
  51.  
  52. • _WEHandlePositionToOffset was lying to inline input components by returning bogus offsets for points in the active input area.  It surprised me that I didn’t catch this one before, but apparently Kotoeri (the Apple supplied inline input component for Japanese) doesn’t use the offset information anyway.  Thanks to Martin Sladok for pointing out this bug.
  53. • WESetSelection no longer invalidates the null scrap if the selection range isn’t changed.
  54. • WECut and WECopy now return an error code if the selection is empty.
  55. • WECanPaste now always returns FALSE for read-only instances.
  56.  
  57. Source Code Changes
  58.  
  59. • In a couple of spots, WASTE would call the Script Manager routines CharByte and CharType directly: now it always uses the hook routines instead (the default hooks, in turn, call CharByte / CharType or their modern replacements CharacterByteType / CharacterType).
  60. • The line break hook in WETabs.p should work now.
  61.  
  62.  
  63. Changes from 1.1a6 to 1.1a7
  64.  
  65. Bug Fixes
  66.  
  67. • Fixed a very stupid bug in _WEGetIndObjectType.  This was causing the demo app to freeze if you tried to access the menus while there was no pasteable item on the clipboard.
  68.  
  69. Source Code Changes
  70.  
  71. • Switched to Universal Headers 2.0a3 for Pascal.  I had to tweak the headers considerably to make them compile under THINK Pascal.
  72. • Lots of formal changes to the source code in an attempt to improve portability (although I’m afraid changes are still necessary in order to compile the sources with MPW or Metrowerks Pascal).  Also added a bunch of PowerPC-related stuff (not complete).
  73. • In WEInlineInput.p, changed keyAETextFont and keyAETextPointSize to keyAETSMTextFont and keyAETSMTextPointSize.  Apparently, there were conficting declarations in AERegistry.p and TextServices.p so Apple had to rename some constants.
  74. • Added WERemoveTSMHandlers, as in the C version.
  75. • The WASTE_OBJECTS_ARE_GLYPHS compiler switch is now FALSE by default.  As a result, a single click in the middle of an object selects it.
  76.  
  77. WASTEDemo Changes
  78.  
  79. • Added handlers for 'snd ' objects (thanks to Michael Kamprath for the icons).  Try this: .
  80.  
  81.  
  82. Changes from 1.1a5 to 1.1a6
  83.  
  84. New Features
  85.  
  86. • The prototypes for a couple of hook routines have been changed to match the corresponding declarations in CWASTE (version 1.1r7 and newer).
  87. • You can now install object handlers belonging to a specific WE instance.  You can still install “global” handlers like before, if you want to.  As a side-effect of this change, I had to change the prototype of two WASTE routines (sorry for the inconvenience).
  88. • You can reset the hook fields of a WE instance to their default values by calling WESetInfo with *info set to zero.
  89. • You can pass weBitToggle in WEFeatureFlag action parameter to toggle the specified feature (set-theoretic remark: so now there’s an action code for every possible function from {0, 1} to {0, 1}).
  90.  
  91. API Changes (!)
  92.  
  93. • WEInstallObjectHandler and WECanPaste take an additional WEHandle parameter.  Leaving this parameter NIL when calling WEInstallObjectHandler installs your handler in the global object hander table, rather than in the instance-specific table.
  94.  
  95. Bug Fixes
  96.  
  97. • Fixed an incompatibility with some input methods for double-byte scripts, like Apple’s input method for Simplified Chinese.  Now WASTE always removes the underline when converted text is confirmed.
  98. • It’s safe to call WEContinuousStyle without fear of WASTE writing past the end of your TextStyle record.
  99.  
  100. Tabs
  101.  
  102. • While porting the tab package to Pascal, I tried to break it in every possible way :-) so I came up with some changes which are supposed to fix a couple of tiny quirks in the original code (for example, double-clicking a tab didn’t seem to work as expected).  I still haven’t tested the _WETabLineBreak routine, though.
  103.  
  104. WASTE Demo Changes
  105.  
  106. • I incorporated the tab code provided by Mark Alldritt and Dan Crevier: the whole package can be installed and removed on the fly from the Features menu.
  107. • Added a Color menu.
  108. • Embedded object information is now saved to the resource fork of text files as a SOUP resource.
  109. • New About box.
  110.  
  111.  
  112. Changes from 1.1a4 to 1.1a5
  113.  
  114. Bug Fixes
  115.  
  116. • Following a suggestion by Alan Steremberg, I added a line of code that’s supposed to fix an incompatibility with the WorldScript Power Adapter.
  117. • Because of a bug in the _WETypeChar routine, entering double-byte characters using an input window (rather than inline input) when the selection range wasn’t empty would cause extra characters to be deleted.  This bug has been fixed.
  118. • The selection is no longer deleted when you drag it to the trash while holding down the option key.
  119. • Dragging a picture (or any non-textual flavor) to a WE instance would cause the modification count to be incremented by two (instead of one).  Fixed.
  120. • The algorithm used by the _WENewStyle routine is now a little bit more logical.
  121. • WEStopInlineSession now avoids a potentially time-consuming call to FixTSMDocument if there’s no active input area.
  122. • Empty rectangular frames are drawn in place of objects for which no draw handler has been registered.
  123.  
  124. New Feature Flag
  125.  
  126. As requested by Dan, I added a new feature flag, weFReadOnly, meant to disallow changes to the text.  When this flag is set:
  127.  
  128. • WEKey accepts only arrow keys.
  129. • The main TSM handler does nothing, effectively disabling inline input.
  130. • WECut works like WECopy.
  131. • WEInsert, WEInsertObject, WEDelete, WESetStyle, WEPaste and WEUndo do nothing and return a result code (weReadOnlyErr).
  132. • WETrackDrag ignores all drags.
  133. • WEReceiveDrag always returns badDragFlavorErr.
  134. • WEClick doesn’t delete the selection if you drag it to the trash.
  135.  
  136. I haven’t tested this new feature carefully yet.
  137.  
  138. New Hooks
  139.  
  140. Several Toolbox routines, like DrawJustified and StyledLineBreak, are now called through wrapper routines that can be replaced by custom hooks.
  141. The main reason for this is that I wanted to take advantage of the tab code written by Mark and Dan without actually incorporating the code into the library itself.  In the future, other cool features, like “Show invisibles”, could be implemented by writing custom hooks.
  142. Now, the hook approach almost works, but not quite yet.  I’m not sure I’m passing all the parameters that might be needed by the custom routine.
  143.  
  144. WENew places the addresses of built-in wrappers in the hook fields of the instance record.  For some hooks (e.g. the word break hook), there are two different wrappers: one using a Toolbox routine available only with System 7.1 or newer (e.g. FindWordBreaks), the other using an obsolete routine for compatibility with System 7.0 (e.g. FindWord).
  145. With a little more code, we could add support for System 6.
  146.  
  147. Universal Interfaces
  148.  
  149. I changed the spelling of several Toolbox constants and routines according (I hope) to the new universal interfaces.  For example, NDrawJust is now DrawJustified.
  150.  
  151. WASTE Demo Changes
  152.  
  153. The WASTE Demo app now sports a new Features menu that lets you enable and disable specific WASTE features at any time to see what happens.